Computer programs are groups of instructions that describe actions to be performed by a computer or other processor-based device. When a computer program is loaded and executed on computer hardware, the computer will behave in a predetermined manner by following the instructions of the computer program. Accordingly, the computer becomes a specialized machine that performs the tasks prescribed by the instructions.
A programmer using one or more programming languages creates the instructions comprising a computer program. Typically, source code is specified or edited by a programmer manually and/or with help of an integrated development environment. Subsequently, the source code can be compiled or otherwise transformed into computer instructions executable by a computer or like device.
By way of example, a programmer may choose to implemented code utilizing an object-oriented programming language (e.g., C#, Java . . . ). In accordance with such a paradigm, programmers will create a number of classes identifying properties and characteristics of an abstract thing as well as methods describing class behavior or abilities. Specific programmatic logic can then be specified as interactions between instances of classes or objects, among other things. Subsequently, executable code for a particular machine can be produced by an associated compiler. Alternatively, code can be transformed into intermediate code for a target virtual machine to facilitate execution on multiple computer platforms via further compilation or interpretation of the intermediate code.
In some situations, more than one party collaborates to produce final desired code. This occurs most commonly when a portion of code is generated by a program rather than written by a person. In rich frameworks and development environments large parts of a project's code are routinely generated automatically from visual form designers, database schemas, web-service descriptions and the like.
One issue with machine generated source code is that in many cases the resulting code needs to be tweaked and/or customized. For example, business logic may need to be added to boilerplate code to enable interaction with a given database. Accordingly, programmers can directly modify generated machine code to support any desired tweaks and/or customizations.